<?php
/**
 * Action хелпер для формирования ссылок в контейнере Zend_Navigation по-своему, с добавлением параметра языка в url
 * @since 2.0.1
 * @author Andrew
 */
class Nimblecms_Controller_Action_Helper_Url extends Zend_Controller_Action_Helper_Url {
    /**
     * Перегруженный метод url
     * @param type $urlOptions
     * @param type $name
     * @param type $reset
     * @param type $encode
     * @return string 
     */
    public function url($urlOptions = array(), $name = null, $reset = false, $encode = true) {
       $url = parent::url($urlOptions, $name, $reset, $encode);
       
       $frontController = $this->getFrontController();
       
       $router = $frontController->getRouter();
       
       if($router instanceof Zend_Controller_Router_Rewrite) {
            $route = $router->getRoute($name);
            $defaults = $route->getDefaults();
            
            /**
             * Добавляем язык в начало URL
             */
            if(isset($defaults['localization']) && 'true' == (string) $defaults['localization']['enable']) {
                /**
                 * Больше не используем сессию для хранения языка
                 */
                
                /*$langNamespace = new Zend_Session_Namespace('site');
                
                if(isset($langNamespace->defaultLang)) {
                    $lang = $langNamespace->defaultLang;
                } else {
                
                    $lang = isset($urlOptions['language']) ? $urlOptions['language'] : Zend_Controller_Front::getInstance()->getRequest()->getParam('lang');
                }
                
                $baseUrl = $this->view->baseUrl();
                
                $serverUrl = $this->view->serverUrl();
                
                
                $path = substr($serverUrl . $url, strlen($baseUrl));
                
                $newUrl = rtrim(substr($baseUrl, strlen($serverUrl)), '/') . '/' . $lang . '/' . ltrim($path, '/');*/
                
                $lang = isset($urlOptions['language']) ? $urlOptions['language'] : $frontController->getRequest()->getParam('lang');
                
                $bootstrap = $frontController->getParam('bootstrap');
                $bootstrap->bootstrapView();
                $view = $bootstrap->getResource('view');
                
                $baseUrl = $view->baseUrl();
                $serverUrl = $view->serverUrl();
                $path = substr($serverUrl . $url, strlen($baseUrl));
                $newUrl = rtrim(substr($baseUrl, strlen($serverUrl)), '/') . '/' . $lang . '/' . ltrim($path, '/');
                
                return $newUrl;
            }
        }
        
        return $url;
       }
}
